package com.fred.backjava.manage.auth;

/**
 * @author Fred
 * @version 1.0
 * @date 2025/4/22 11:05
 */

import cn.dev33.satoken.stp.StpLogic;
import cn.dev33.satoken.stp.StpUtil;
import org.springframework.stereotype.Component;

/**
 * StpLogic 门面类，管理项目中所有的 StpLogic 账号体系
 * 添加 @Component 注解的目的是确保静态属性 DEFAULT 和 SPACE 被初始化
 * 实现多账号体系，为什么要建立多账号体系，而不是通过角色区分管理员还是普通用户？
 * 本项目中：团队空间模块和之前的模块校验逻辑不同，
 * 有的项目中：校验逻辑不同，登录用户放在不同的表中，比如普通用户一张表，管理员单独一张表，为了安全
 * 以上的举例都需要多账号体系更容易，
 */
@Component
public class StpKit {

    public static final String SPACE_TYPE = "space";

    /**
     * 默认原生会话对象，项目中目前没使用到
     */
    public static final StpLogic DEFAULT = StpUtil.stpLogic;

    /**
     * Space 会话对象，管理 Space 表所有账号的登录、权限认证
     */
    public static final StpLogic SPACE = new StpLogic(SPACE_TYPE);
}

